home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / share / defoma / libhint-cid.pl < prev    next >
Text File  |  2006-06-17  |  4KB  |  136 lines

  1. sub sethint_cid {
  2.     my $font = shift;
  3.     my $flag = 0;
  4.     my $line;
  5.     my $fontname = '';
  6.     my $cidregistry = '';
  7.     my $cidordering = '';
  8.     my $cidsupplement = '';
  9.     my $family;
  10.     my $generalfamily;
  11.     my $weight;
  12.     my $width;
  13.     my $shape;
  14.     my $slant;
  15.     my $serif;
  16.     my $swidth;
  17.     my $text;
  18.  
  19.     my $fontfilename = $font;
  20.     $fontfilename =~ s/^(.*)\/(.*)$/$2/;
  21.     my $fontdir = $1;
  22.     
  23.     open(F, $font) || exitfunc(1, "$font: Unable to open.");
  24.     
  25.     while (<F>) {
  26.     $line = $_;
  27.     chomp($line);
  28.     
  29.     if ($line =~ /\/CIDFontName[ \t]/) {
  30.         $fontname = $line;
  31.         $fontname =~ s/.*\/CIDFontName[ \t]+\/([^ \t]+).*/$1/;
  32.     } elsif ($line =~ /\/CIDSystemInfo[ \t]/) {
  33.         $flag = 1;
  34.     } elsif ($flag == 1 && $line =~ /end[ \t]+def/) {
  35.         $flag = 0;
  36.     } elsif ($flag == 1 && $line =~ /\/Registry[ \t]/) {
  37.         $cidregistry = $line;
  38.         $cidregistry =~ s/.*\/Registry[ \t]+\((.*)\).*/$1/;
  39.     } elsif ($flag == 1 && $line =~ /\/Ordering[ \t]/) {
  40.         $cidordering = $line;
  41.         $cidordering =~ s/.*\/Ordering[ \t]+\((.*)\).*/$1/;
  42.     } elsif ($flag == 1 && $line =~ /\/Supplement[ \t]/) {
  43.         $cidsupplement = $line;
  44.         $cidsupplement =~ s/.*\/Supplement[ \t]+(.).*/$1/;
  45.     }
  46.  
  47.     if ($fontname ne '' && $cidordering ne '' && $cidregistry ne '' &&
  48.         $cidsupplement ne '') {
  49.         last;
  50.     }
  51.     }
  52.  
  53.     close F;
  54.  
  55.     if ($fontname eq '' || $cidordering eq '' || $cidregistry eq '') {
  56.     exitfunc(1, "Some information aren't found in $fontfilename.\nAborting..");
  57.     }
  58.  
  59.     $family = $fontname;
  60.     $family =~ s/([^-]+).*/$1/;
  61.  
  62.     $weight = 'Medium';
  63.     $weight = 'Semibold' if ($fontname =~ /Semibold/);
  64.     $weight = 'Semibold' if ($fontname =~ /Demi/);
  65.     $weight = 'Bold' if ($fontname =~ /Bold/);
  66.     $weight = 'Light' if ($fontname =~ /Light/);
  67.  
  68.     $width = 'Variable';
  69.  
  70.     $slant = 'Upright';
  71.     $slant = 'Italic' if ($fontname =~ /Italic/);
  72.     $slant = 'Oblique' if ($fontname =~ /Oblique/);
  73.  
  74.     $swidth = '';
  75.     $swidth = 'Expanded' if ($fontname =~ /Expanded/);
  76.     $swidth = 'Condensed' if ($fontname =~ /Condensed/);
  77.     $swidth = 'Condensed' if ($fontname =~ /Narrow/);
  78.  
  79.     $serif = '';
  80.     $serif = 'Serif';
  81.  
  82.     $family = input_family($fontname, $family);
  83.     return if ($result != 0);
  84.  
  85.     $generalfamily = input_generalfamily($fontname, $family);
  86.     return if ($result != 0);
  87.     $serif = 'NoSerif' if ($generalfamily eq 'SansSerif');
  88.     $width = 'Fixed' if ($generalfamily eq 'Typewriter');
  89.  
  90.     $weight = input_weight($fontname, $weight);
  91.     return if ($result != 0);
  92.  
  93.     $width = input_width($fontname, $width);
  94.     return if ($result != 0);
  95.  
  96.     $shape = input_shape($fontname, "$slant $serif $swidth");
  97.     return if ($result != 0);
  98.  
  99.     my $alias = input_alias($fontname, '');
  100.     return if ($result != 0);
  101.  
  102.     my $priority = input_priority($fontname, 20);
  103.     return if ($result != 0);
  104.  
  105.     my $afm = $font;
  106.     $afm =~ s/\.cid$//;
  107.     $afm .= ".afm";
  108.     unless (-f $afm) {
  109.     $afm = input_afm($fontname, $afm);
  110.     } else {
  111.     $afm = "$SUFFIXPATH" . $afm;
  112.     }
  113.     
  114.     my $hints = "--FontName $fontname";
  115.     $hints .= " --CIDRegistry $cidregistry";
  116.     $hints .= " --CIDOrdering $cidordering";
  117.     $hints .= " --CIDSupplement $cidsupplement" if ($cidsupplement =~ /\S/);
  118.  
  119.     $hints .= " --Family $family";
  120.     $hints .= " --GeneralFamily $generalfamily" if ($generalfamily =~ /\S/);
  121.     $hints .= " --Weight $weight" if ($weight =~ /\S/);
  122.     $hints .= " --Width $width" if ($width =~ /\S/);
  123.     $hints .= " --Shape $shape" if ($shape =~ /\S/);
  124.     $hints .= " --Alias $alias" if ($alias =~ /\S/);
  125.     $hints .= " --Priority $priority";
  126.     $hints .= " --AFM $afm" if ($afm =~ /\S/);
  127.     
  128.     $hints =~ s/\s+/ /g;
  129.  
  130.     return $hints;
  131. }
  132.  
  133. 1;    
  134.  
  135.     
  136.